interface Point {
  rowPerView: number;
}

export interface ViewCard {
  src: any;
  id?: number;
  name?: string;
  star?: boolean;
  backgroundColor?: string;

  [attr: string]: any;
}

export type Breakpoints = Record<number, Point>;

export interface WaterfallProps {
  breakpoints?: Breakpoints;
  width?: number;
  posDuration?: number;
  animationDuration?: number;
  animationDelay?: number;
  animationEffect?: string;
  hasAroundGutter?: boolean;
  gutter?: number;
  list: ViewCard[];
  animationPrefix?: string;
  align?: string;
  delay?: number;
  onClickItem?: (item: number) => void;
  onAfterRender?: () => void;
}

export interface ItemWidthProps {
  breakpoints: Breakpoints;
  wrapperWidth: number;
  gutter: number;
  hasAroundGutter: boolean;
  initWidth: number;
}

export interface ItemWidthByBreakpointProps extends ItemWidthProps {
  size: number;
}
